Virtual machine (VM) systems provide a guest operating system (OS) with a virtual execution platform comprising virtual hardware subsystems configured to emulate corresponding physical hardware subsystems. In some virtualized systems, the virtual hardware subsystems are substantially indistinguishable to the guest OS from corresponding physical hardware subsystems. For example, the guest OS executes on a virtual central processing unit (CPU) that function as a physical CPU, but can be thought of as a virtualized representation of a physical CPU. Each of potentially many VMs may execute on a corresponding instance of a virtual CPU that are isolated from one another, while transparently sharing a common underlying physical CPU. A host OS typically manages physical hardware resources that provide underlying functionality for the virtual hardware subsystems used by VMs. Certain virtual hardware subsystems, such as a virtual CPU, share access to a corresponding physical hardware resource. Other virtual hardware subsystems, such as universal serial bus (USB) storage devices are conventionally connected to a specific VM for exclusive access.
In the art of wireless communications, Bluetooth® refers to a specific systems architecture having a physical wireless link layer, a link-based communications protocol, and an interface specification. A device that implements the Bluetooth system architecture is referred to as a Bluetooth device. For example, a cell phone earpiece configured to communicate via Bluetooth is a Bluetooth device. A Bluetooth device that is configured to provide wireless connectivity to a host system is referred to in the art as a Bluetooth adapter. The link-based protocol specifies an asynchronous connectionless link (ACL) as a basic data channel that may be established between any two Bluetooth devices. All data transmitted between the two Bluetooth devices is transmitted via one ACL linking the two devices. Only one ACL may be established between any two Bluetooth devices.
When a Bluetooth adapter is attached to a physical host system executing one or more VMs, the Bluetooth adapter is conventionally used by a guest OS associated with one of the VMs. This guest OS is given exclusive access to the Bluetooth adapter via a pass-through connection to the Bluetooth adapter. In such a scenario, no other guest OS may connect to the Bluetooth adapter without potentially interfering with the guest OS connected to the Bluetooth adapter. For example, if one guest OS establishes an ACL with an external Bluetooth device, and a second guest OS attempts to establish a second ACL with the same external Bluetooth device, then an error will occur because Bluetooth specifically prohibits establishing more than one ACL between two Bluetooth devices. In usage models requiring plural guest OS instances executing on a particular host to each have Bluetooth connectivity, a physically different Bluetooth adapter is required to be coupled to the host for each guest OS instance. Such redundant hardware is expensive and inefficient.